﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Negocio.Avaliacao;
using Negocio.Produto;
using Negocio.Usuario;

namespace qbaproject.Avaliacao.Consultar
{
    public partial class consultarAvaliacao : System.Web.UI.Page
    {
        
        private int paginaAtual = 0;
        private double num;
        private int nrNotaGeral = 0;
        private int nrNotaPreco = 0;
        private int nrNotaQualidade = 0;
        private int nrNotaTempoUso = 0;
        private int idUsuario;
        private int idProduto;

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                carregarDdl();
            }
        }

        private void carregarDdl()
        {
            var obNProduto = new NProduto();
            
            //Carregar tipo de produto
            ddlProdutos.DataSource = obNProduto.pegarProdutos();
            ddlProdutos.DataBind();
            ddlProdutos.Items.Insert(0, new ListItem("Selecionar o produto", "0"));

            var obNUsuario = new NUsuario();

            //Carregar usuarios colaboradores
            ddlUsuarios.DataSource = obNUsuario.pegarUsuarios(null, 0, null, null, null, null, null, null, null, null, null, null, 0, 0, 0, 0, 0, 4);
            ddlUsuarios.DataBind();
            ddlUsuarios.Items.Insert(0, new ListItem("Selecionar o usuário", "0"));

        }

        protected void lkbPesquisar_Click(object sender, EventArgs e)
        {
            carregarGrid();
        }

        public void carregarGrid()
        {
            
            var obNAvaliacao = new NAvaliacao();

            if(verificarForm())
            {
                

                var obListAvaliacao = obNAvaliacao.pegarAvaliacoes(txtTeAvaliacao.Text,nrNotaGeral, nrNotaQualidade, nrNotaPreco, nrNotaTempoUso, null, txtTePros.Text, txtTeContras.Text,idProduto, Convert.ToInt32(ddlUsuarios.SelectedValue));

                if (obListAvaliacao.Tables[0].Rows.Count != 0)
                {
                    divMsnPesquisaSucesso.Visible = true;
                    lblNumEncontrados.Text = "Foram encontrados " + obListAvaliacao.Tables[0].Rows.Count.ToString() + " registros.";
                    divMsnPesquisaAtencao.Visible = false;
                }
                else
                {
                    divMsnPesquisaSucesso.Visible = false;
                    divMsnPesquisaAtencao.Visible = true;
                }

                grdResAvaliacao.PageSize = 15;
                grdResAvaliacao.AllowPaging = true;
                grdResAvaliacao.PageIndex = paginaAtual;
                grdResAvaliacao.DataSource = obListAvaliacao;
                grdResAvaliacao.DataBind(); 
            }


        }

        private bool verificarForm()
        {
            var boForm = true;

            if (Double.TryParse(txtNrNotaGeral.Text, out num) || string.IsNullOrEmpty(txtNrNotaGeral.Text))
            {
                if (Double.TryParse(txtNrNotaGeral.Text, out num))
                {
                    nrNotaGeral = Convert.ToInt32(txtNrNotaGeral.Text);
                }
                lblNrNotaGeralObrigatoria.Text = "";
            }
            else
            {
                boForm = false;
                lblNrNotaGeralObrigatoria.Text = "A nota deve ser um número";
            }

            if (Double.TryParse(txtNrNotaPreco.Text, out num) || string.IsNullOrEmpty(txtNrNotaPreco.Text))
            {
                if (Double.TryParse(txtNrNotaPreco.Text, out num))
                {
                    nrNotaPreco = Convert.ToInt32(txtNrNotaPreco.Text);
                }
                lblNrNotaPrecoObrigatoria.Text = "";
            }
            else
            {
                boForm = false;
                lblNrNotaPrecoObrigatoria.Text = "A nota deve ser um número";
            }

            if (Double.TryParse(txtNrNotaQualidade.Text, out num) || string.IsNullOrEmpty(txtNrNotaQualidade.Text))
            {
                if (Double.TryParse(txtNrNotaQualidade.Text, out num))
                {
                    nrNotaQualidade = Convert.ToInt32(txtNrNotaQualidade.Text);
                }
                lblNrNotaQualidadeObrigatoria.Text = "";
            }
            else
            {
                boForm = false;
                lblNrNotaQualidadeObrigatoria.Text = "A nota deve ser um número";
            }

            if (Double.TryParse(txtNrNotaTempoUso.Text, out num) || string.IsNullOrEmpty(txtNrNotaTempoUso.Text))
            {
                if (Double.TryParse(txtNrNotaTempoUso.Text, out num))
                {
                    nrNotaTempoUso = Convert.ToInt32(txtNrNotaTempoUso.Text);
                }
                lblNrNotaTempoUsoObrigatoria.Text = "";
            }
            else
            {
                boForm = false;
                lblNrNotaTempoUsoObrigatoria.Text = "A nota deve ser um número";
            }

            return boForm;
        }

        protected void grdResAvaliacao_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            paginaAtual = e.NewPageIndex;
            carregarGrid();
        }

        protected void lkbSim_Click(object sender, EventArgs e)
        {
            var idAvaliacao = Convert.ToInt32(hdfIdAvaliacaoRemover.Value);
            var obNAvaliacao = new NAvaliacao();
            obNAvaliacao.Remover(idAvaliacao);
            carregarGrid();
        }

        protected void lkbNao_Click(object sender, EventArgs e)
        {
            ModalPopupRemover.Hide();
        }

        protected void grdResAvaliacao_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            switch (e.CommandName)
            {
                case "editar":
                    var idAvaliacao = e.CommandArgument.ToString();
                    Response.Redirect("~/Avaliacao/Editar/editarAvaliacao.aspx?id=" + idAvaliacao);
                    break;
                case "remover":
                    var idAvaliacaoRemover = e.CommandArgument.ToString();
                    hdfIdAvaliacaoRemover.Value = idAvaliacaoRemover;
                    ModalPopupRemover.Show();
                    break;
            }

        }

        protected void lnk_Click(object sender, EventArgs e)
        {
            Response.Redirect("~/Avaliacao/Incluir/incluirAvaliacao.aspx");
        }
        
    }
}